//
//  CLTableViewCell.h
//  CLTableViewProject
//
//  Created by Charles on 16/5/20.
//  Copyright © 2016年 Charles. All rights reserved.
//

#import <UIKit/UIKit.h>
@class CLTableItem;
@interface CLTableViewCell : UITableViewCell
{
    CLTableItem * _item;
}
//每个Cell显示内容对应的model对象,
// 可能为SRTableViewCellItem,也可以为其他
//初始时为nil,在Cell显示之前会设置该对象
@property(nonatomic, strong) CLTableItem *item;

@property(nonatomic, strong) NSIndexPath *indexPath;

+ (CGFloat)tableView:(UITableView *)tableView rowHeightForItem:(CLTableItem *)item;

#pragma mark arrow
/**
 * 是否显示右箭头，默认为NO
 */
@property(nonatomic, assign) BOOL showArrowIcon;

/**
 * 右箭头icon
 */
@property(readonly) UIImage *arrowImage;
@property(readonly) UIImage *arrowHlImage;

/**
 * 右箭头右边距
 */
@property(nonatomic, assign) NSInteger arrowRightMargin;


//object属性observer相关
/*开始监听object属性,在subclass中通过该方法可自定义添加监听的属性*/
- (void)startObserveObjectProperty;

/*清除监听,在subclass中应该清除已添加的属性*/
- (void)finishObserveObjectProperty;

/*监听一个属性*/
- (void)addObservedProperty:(NSString *)property;

/*移出监听*/
- (void)removeObservedProperty:(NSString *)property;

/*属性发生变动的回调*/
- (void)objectPropertyChanged:(NSString *)property;

- (UIImageView *)getArrowImageView;

@end
